#include "TelephoneInfo.h"

#include <stdio.h>
#include <stdlib.h>

enum data
{
    INSERT = 1,
    SHOW,
    REMOVE,
    MODIFY,
    QUIT
};

int main(int argc, char *argv[])
{
    telephone_book book;
    init_info(&book);
    int func_choice = 0; // 功能选择
    while (true)
    {
        printf("  欢迎 使用 通讯录 !\n");
        printf("1、输入新用户\n");
        printf("2、查看用户\n");
        printf("3、删除用户\n");
        printf("4、修改用户\n");
        printf("5、退出通讯录\n");
        printf("请输入你想要的功能：\n");

        if (scanf("%d", &func_choice) != 1)
        {
            // 清除无效输入
            while (getchar() != '\n'); // 清除缓冲区
            printf("无效输入，请输入数字。\n");
            continue; // 重新开始循环
        }
        switch (func_choice)
        {
        // 输入新用户
        case INSERT:
        {
            insert_user(&book);
            printf("添加成功！\n");
            break;
        }

        // 显示用户
        case SHOW:
        {
            if (book.size == 0)
                printf("通讯录没有用户信息！\n");
            else
            {
                for (int i = 0; i < book.size; i++)
                    output_user(&book, i);
            }
            break;
        }

        // 删除用户
        case REMOVE:
        {
            MyStr name;
            InitMyString(&name);
            printf("请输入你要删除的用户:");
            scanf("%s", name.str);
            user *user = find_user_name(&book, &name);
            if (user)
            {
                rm_info_by_name(&book, &name);
                printf("删除成功！");
            }
            else
                printf("目标不存在！\n");
            break;
        }

        // 修改用户
        case MODIFY:
        {
            MyStr name;
            InitMyString(&name);
            printf("请输入你要修改的用户:");
            scanf("%s", name.str);
            user *user = find_user_name(&book, &name);
            if (user)
            {
                modify_info(&book,user);
                printf("修改成功！\n");
            }
            else
                printf("目标不存在！\n");
            break;
        }

        // 退出通讯录
        case QUIT:
        {
            printf("正在退出！\n");
            exit(0);
        }

        default:
            printf("无效的选项，请重新输入。\n");
        }
    }
}